/**
 * @type {WebSocket}
 */
let ws = null
/**
 * 连接 websocket
 */
function connectWs() {
  const wsUrl = $("#wsurl").val()
  if(!wsUrl.trim()) return
  ws = new WebSocket(wsUrl);

  // 30s 发送一次 ping 包（心跳）
  ws.timer = setInterval(() => {
    if(ws !== null && ws.readyState === WebSocket.OPEN) {
      ws.send("ping")
    }
  }, 30000)

  ws.onmessage = function (res) {
    const $p = $("<p></p>");
    if(res.data !== "pong") {
      $p.text(res.data)
      $p.appendTo($("#container")) 
    }
  };

  ws.onopen = function () {
    console.log("websocket 连接成功");
    $("#status").text("已连接")
    $("#status").css({
      color: '#0f0'
    })
  };

  ws.onerror = function (error) {
    console.log("websocket 连接出错：", error);
    $("#status").text("未连接")
    $("#status").css({
      color: '#f00'
    })
  };

  ws.onclose = function () {
    clearInterval(ws.timer)
    console.log("websocket 连接断开");
    $("#status").text("未连接")
    $("#status").css({
      color: '#f00'
    })
  };
}

/**
 * 断开 websocket
 */
function disconnectWs() {
  ws.close()
}

/**
 * 发送消息
 */
function send() {
  if(ws !== null && ws.readyState === WebSocket.OPEN) {
    ws.send($("#message").val());
    $("#message").val("")
  }
}